home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 30
/
Aminet 30 (1999)(Schatztruhe)[!][Apr 1999].iso
/
Aminet
/
biz
/
swood
/
FWTabTools.lha
/
FWTabTools
/
FWCalcMulti1.rexx
< prev
next >
Wrap
OS/2 REXX Batch file
|
1998-01-04
|
4KB
|
203 lines
/* $VER: 0.12 , (04.01.1998), © by Thorsten Willert
Macro um Tabellenspalten zu multiplizieren
------------------------------------------------*/
ADDRESS = 'FinaW'
OPTIONS CACHE RESULTS
STATUS PORTNAME
FW = RESULT
ADDRESS = FW
SIGNAL ON BREAK_C
SIGNAL ON HALT
SIGNAL ON SYNTAX
/*-----------------------------------------------*/
RT.Version = "Version 0.12"
RT.Title = "FWCalcMulti1"
RT.Para1 = "rt_pubscrname = FinalWriterPubScreen rt_topoffset = 50 rt_reqpos = reqpos_topleftscr"
RT.Copyright = "© 1998, by Thorsten Willert"
R = '0A'X
Formel = "1 * 2 = 3"
/*-----------------------------------------------*/
IF ~show('L',"rexxreqtools.library") THEN DO
IF ~addlib('rexxreqtools.library',0,-30,0) THEN DO
'ShowMessage 1 1 "Fehler ..." "Benötige RexxReqTools.library!" "" "Abbruch !!" "" ""'
EXIT 20
END
END
DO FOREVER
RESULT = Info("_Berechnen|_Ende" )
IF RESULT = 0 THEN LEAVE
ELSE IF RESULT = 100 THEN ITERATE
IF GetCursor() = 0 THEN ITERATE
CALL Multi
TableSetActiveCell StartZeile StartSpalte
END
/*-----------------------------------------------*/
Ende:
EXIT
/*-----------------------------------------------*/
GetCursor:
RESULT = ""
ADDRESS(FW)
TableGetActiveCell
PARSE VAR RESULT Zeile Spalte
StartZeile = Zeile
StartSpalte = Spalte
IF Zeile = "" | Spalte = "" THEN /* Geht nicht über GetObjektType */
DO
CALL KeineTabelle
RETURN 0
END
TableGetColumns
PARSE VAR RESULT Muell Spalten
TableGetRows
PARSE VAR RESULT Muell Zeilen
RETURN 1
/*-----------------------------------------------*/
Multi:
DO FOREVER
TableSetActiveCell Zeile Spalte1
Op1 = GetInhalt()
TableSetActiveCell Zeile Spalte2
Op2 = GetInhalt()
TableSetActiveCell Zeile ESpalte
INTERPRET( "Ergebniss =" Op1 * Op2 )
SelectAll
Justify Right
Style Bold
Type Ergebniss
Zeile = Zeile + 1
IF Zeile = Zeilen+1 THEN LEAVE
END
RETURN
/*-----------------------------------------------*/
GetInhalt: PROCEDURE
SelectAll
Extract
Op = STRIP(TRANSLATE( RESULT ,".",","),"T",'0A'X)
IF DATATYPE( Op, "NUMERIC" ) = 1 THEN
Op1 = Op
ELSE
Op1 = 0
RETURN Op1
/*-----------------------------------------------*/
KeineTabelle:
rtezrequest("Zuerst eine Tabelle auswählen"||R||,
"und Cursor positioniern!","Weiter",RT.Title)
RETURN
/*-----------------------------------------------*/
Info:
PARSE ARG Taste1
DO FOREVER
res = rtgetstring(Formel,RT.Version||","||R||RT.Copyright||R||R||,
"Multipliziert Spalten ab Cursor-Zeile:"||R||,
"Spalte * Spalte = Spalte",RT.Title,Taste1,RT.Para1)
IF rtresult = 1 THEN LEAVE
ELSE RETURN rtresult
END
IF MakeFormel( res ) = 0 THEN RETURN 100
RETURN res
/*-----------------------------------------------*/
MakeFormel:
PARSE ARG Formel
Formel2 = TRANSLATE(Formel," ", "*=()+-:;")
IF VERIFY( Formel2 , " 1234567890" ) ~= 0 THEN
DO
CALL Message( "Ungültiges Zeichen in Formel!"||R||Formel )
RETURN 0
END
ELSE
PARSE VAR Formel2 Spalte1 Spalte2 ESpalte
IF Spalte1 = "" | Spalte2 = "" | ESpalte = "" THEN
DO
CALL Message( "Falsche Spaltenangabe!"||R||Formel )
RETURN 0
END
IF Spalte1 > Spalten | Spalte2 > Spalten |,
ESpalte > Spalten THEN
DO
CALL Message( "Spalte außerhalb Tabelle!"||R||Formel )
RETURN 0
END
RETURN 1
/*-----------------------------------------------*/
Message:
PARSE ARG RT.Text
rtezrequest(RT.Text,"_Weiter",RT.Title)
RETURN
/*-----------------------------------------------*/
HALT:
BREAK_C:
rtezrequest("Macro wurde abgebrochen ... ","_Weiter",RT.Title)
EXIT 10
/*-----------------------------------------------*/
SYNTAX:
rtezrequest("Fehler!","_Weiter",RT.Title)
EXIT 10